const express = require("express");

/* 创建路由器对象 */
const router = express.Router();

/* 定义路由 */

/* 受理注册请求 */
router.post("/register", (req, res) => {
  const MongoClient = require("mongodb").MongoClient;
  const url = "mongodb://localhost:27017/";

  /* 查询用户名是否存在 是则直接注册失败 */
  MongoClient.connect(url, function (err, conn) {
    if (err) {
      res.json(err);
      return;
    }

    const dbObj = conn.db("my_express_server");

    dbObj
      .collection("user")
      .find({ username: req.body.username }) //{username:"heige"}
      .toArray(function (err, dataArr) {
        conn.close();

        /* 查询成功 且 结果不为空数组 说明用户名已存在 */
        if (!err && dataArr.length) {
          // 注册失败
          res.json({
            reason: "用户名已存在",
            msg:"注册失败"
          });
        } else {
          /* 用户名不存在走正常的添加用户逻辑 */
          MongoClient.connect(url, function (err, conn) {
            if (err) {
              res.json(err);
            } else {
              const dbObj = conn.db("my_express_server");

              dbObj.collection("user").insertOne(
                req.body, //{username:"baige",password:"123456"}
                function (err, data) {
                  conn.close();
                  if (err) {
                    res.json(err);
                  } else {
                    res.json({
                      ...data,
                      msg: "注册成功！",
                    });
                  }
                }
              );
            }
          });
        }
      });
  });

});

/* 受理登录请求 */
router.post("/login", (req, res) => {
  const MongoClient = require("mongodb").MongoClient;
  const url = "mongodb://localhost:27017/";

  MongoClient.connect(url, function (err, conn) {
    if (err) {
      res.json(err);
      return;
    }

    const dbObj = conn.db("my_express_server");

    dbObj
      .collection("user")
      .find(req.body) //{username:"heige",password:"123456"}
      .toArray(function (err, dataArr) {
        conn.close();

        /* 查询成功 且 结果不为空数组 才算登录成功 */
        if (!err && dataArr.length) {
          res.json({
            dataArr,
            msg: "登录成功",
          });
        } else {
          res.json({
            err,
            dataArr,
            msg: "登录失败",
          });
        }
        
      });
  });
});

module.exports = router;
